CAPTOR FUND MANAGEMENT
An introduction to the openseries Python package
First we set it all up
from openseries.frame import OpenFrame
from openseries.series import OpenTimeSeries
from plotly.offline import init_notebook_mode
from plotly.offline import iplot
init_notebook_mode()
Here we fetch NAV (price per unit) for some of the Captor mutual funds
basket = OpenFrame(
[
OpenTimeSeries.from_open_nav(isin="SE0009807308"),
OpenTimeSeries.from_open_nav(isin="SE0011337195"),
OpenTimeSeries.from_open_nav(isin="SE0011670843"),
], weights=[
0.25,
0.25,
0.50])
basket = basket.trunc_frame().to_cumret()
We then make a portfolio of the funds based on the provided weights
portfolio = OpenTimeSeries.from_df(basket.make_portfolio("Portfolio"))
basket = basket.add_timeseries(portfolio)
And create a Plotly plot of all the data
figure, _ = basket.plot_series(tick_fmt=".1%", auto_open=False, output_type="div")
We display the plot in the notebook
figure = figure.update_layout(legend=dict(yanchor="bottom", y=0.02, xanchor="right", x=0.98))
iplot(figure, link_text='')
Here we calculate and display a Pandas Dataframe with some analyses
df = basket.all_properties(properties=[
"arithmetic_ret",
"vol",
"ret_vol_ratio",
"sortino_ratio",
"worst_month",
"cvar_down",
"first_indices",
"last_indices",
]
)
df.columns = df.columns.droplevel(level=1)
formats = [
"{:.2%}",
"{:.2%}",
"{:.2f}",
"{:.2f}",
"{:.2%}",
"{:.2%}",
"{:%Y-%m-%d}",
"{:%Y-%m-%d}",
]
for item, f in zip(df.index, formats):
df.loc[item] = df.loc[item].apply(
lambda x: x if isinstance(x, str) else f.format(x)
)
df
| Captor Iris Bond | Captor Dahlia Green Bond | Captor Scilla Global Equity | Portfolio | |
|---|---|---|---|---|
| Arithmetic return | -4.40% | -2.51% | 5.65% | 1.33% |
| Volatility | 6.00% | 3.01% | 12.99% | 7.11% |
| Return vol ratio | -0.73 | -0.83 | 0.44 | 0.19 |
| Sortino ratio | -1.01 | -1.07 | 0.57 | 0.24 |
| Worst month | -6.49% | -4.83% | -12.25% | -7.54% |
| CVaR 95.0% | -0.93% | -0.54% | -2.06% | -1.14% |
| first indices | 2019-02-12 | 2019-02-12 | 2019-02-12 | 2019-02-12 |
| last indices | 2022-07-14 | 2022-07-14 | 2022-07-14 | 2022-07-14 |
Thank you for listening